#include <iostream>
#include <list>

using namespace std;
//list 赋值和交换:给list容器进行赋值，以及交换list容器
//函数原型：
//1、assign(beg, end);                         //将[beg, end)区间中的数据拷贝赋值给本身。
//2、assign(n, elem);                          //将n个elem拷贝赋值给本身。
//3、list& operator=(const list &lst);         //重载等号操作符
//4、swap(lst);                                //将lst与本身的元素互换。

void printL(const list<int> &l) {
    for (list<int>::const_iterator it = l.begin(); it != l.end(); ++it) {
        cout << *it << " ";
    }
    cout << endl;
}

//赋值
void test1() {
    list<int> l1;
    l1.push_back(10);
    l1.push_back(20);
    l1.push_back(30);
    l1.push_back(40);

    list<int> l2;
    l2 = l1;//operator= 赋值
    printL(l2);

    list<int> l3;
    l3.assign(l2.begin(), l2.end());
    printL(l3);

    list<int> l4;
    l4.assign(10, 100);
    printL(l4);
}

//交换
void test2() {
    cout << "交换前:" << endl;
    list<int> l1;
    l1.push_back(10);
    l1.push_back(20);
    l1.push_back(30);
    l1.push_back(40);
    printL(l1);

    list<int> l2;
    l2.assign(10, 100);
    printL(l2);


    l1.swap(l2);
    cout << "交换后:" << endl;
    printL(l1);
    printL(l2);

}

int main() {
    test1();
    cout << "=========" << endl;
    test2();
    return 0;
}